#ifndef _MI_CLIENT_H_
#define _MI_CLIENT_H_

#include "collaboration.h"

/**
* Cliente de metainformacion del sistema
*
* @author Carlos Rodriguez Dominguez
*/
class MI_client{
public:
	/**
	* Constructor
	*
	* @param __orb Orbe de CORBA ya inicializado
	*/
	MI_client(CORBA::ORB_ptr __orb);
	
	/**
	* Destructor
	*/
	~MI_client();
	
	/**
	* Obtiene una lista con la metainformacion de las aplicaciones
	*
	* @return Lista con la metainformacion de las aplicaciones
	*/
	collaboration::ListOfApplications* applications();
	
	/**
	* Obtiene una lista con la metainformacion de los usuarios
	* de una aplicacion
	*
	* @return Lista con la metainformacion de los usuarios
	*/
	collaboration::ListOfUsers* users(const char* app);
	
	/**
	* Obtiene el interfaz CORBA de acceso a datos de metainformacion.
	* No debe utilizarse esta interfaz directamente. Debe hacerse
	* uso de la clase @see MIServiceConnector para que se gestione
	* esta interfaz adecuadamente.
	*
	* @return Interfaz CORBA de acceso a datos de metainformacion
	*/
	collaboration::MIDataAccessor_ptr get_data_accessor();
	
private:
	CORBA::ORB_ptr orb; /**< Orbe de CORBA */
	collaboration::MIDataAccessor_var ctrl; /**< Interfaz CORBA de acceso a datos de metainformacion */
};

#endif
